iT邦幫忙

3

[Python教學] 實作密碼產生器

  • 分享至 

  • xImage
  •  

實作密碼產生器

請使用者輸入要產生幾位數的密碼長度
依據使用者輸入的密碼長度,輸出密碼

import random
import string

數字 = string.digits
英文 = string.ascii_letters
字母表 = 數字 + 英文
# 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

亂數字母表 = list(數字 + 英文)
random.shuffle(亂數字母表)
# ['Y', 'h', 'u', 'J', 'I',.., 'X']

長度 = int(input("你的密碼要幾位數?"))
密碼 = "".join(亂數字母表[:長度])
print(f"密碼:{密碼}")

https://ithelp.ithome.com.tw/upload/images/20231107/20072651d7tu7t4eCP.png

random 標準函式庫

https://ithelp.ithome.com.tw/upload/images/20231107/20072651H89eLiWZPH.jpg

random 模組是Python的一個內置模組,它提供了生成隨機數的功能。隨機數在許多應用中都很有用,例如模擬、遊戲、加密和隨機數學等。以下是一些有關 random 模組的介紹:

  1. 隨機數生成:
    random 模組提供了多種生成隨機數的函數,包括整數和浮點數。以下是一些常用的函數:
    • random.random(): 返回一個0到1之間的隨機浮點數。
    • random.randint(a, b): 返回一個在整數範圍**[a, b]**內的隨機整數。
    • random.uniform(a, b): 返回一個在浮點數範圍**[a, b]**內的隨機浮點數。
import random

# 生成隨機浮點數
random_num = random.random()
print("隨機浮點數:", random_num)
# 隨機浮點數: 0.9522926491054712

# 生成隨機整數
random_int = random.randint(1, 10)
print("隨機整數:", random_int)
# 隨機整數: 7

  1. 隨機序列操作:
    random 模組還提供了一些用於操作隨機序列的函數,例如將序列打亂、從序列中隨機選取元素等。
    • random.shuffle(seq): 打亂序列 seq 的順序。
    • random.choice(seq): 從序列 seq 中隨機選取一個元素。
    • random.sample(seq, k): 從序列 seq 中隨機選取 k 個不重複的元素。
import random

my_list = [1, 2, 3, 4, 5]

# 打亂序列順序
random.shuffle(my_list)
print("打亂後的序列:", my_list)
# 打亂後的序列: [1, 3, 5, 4, 2]

# 隨機選取一個元素
random_element = random.choice(my_list)
print("隨機選取的元素:", random_element)
# 隨機選取的元素: 2

# 隨機選取多個不重複的元素
random_sample = random.sample(my_list, 2)
print("隨機選取的樣本:", random_sample)
# 隨機選取的樣本: [2, 1]

  1. 隨機種子設定:
    如果需要生成可重複的隨機數序列,您可以使用 random.seed(seed) 函數,其中 seed 是隨機種子值。同一個種子值將產生相同的隨機數序列。
import random

# 設定隨機種子
random.seed(42)

# 生成隨機數
random_num = random.random()
print("隨機浮點數:", random_num)
# 隨機浮點數: 0.6394267984578837

random 模組提供了許多強大的隨機數生成工具,可用於各種應用。根據您的需求,您可以使用這些函數來生成隨機數、操作序列,以及實現其他隨機性相關的功能。

string 函式庫

string 模組是Python的一個內置模組,它提供了一些常用的字符串相關常數和函數。這個模組通常用於處理和操作字符串,包括字符集、標點符號、數字等等。以下是一些 string 模組中的常用成員和功能:

  1. string.ascii_letters: 包含所有ASCII字母(大寫和小寫)的字符
import string

letters = string.ascii_letters
print(letters)  # 輸出: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1. string.ascii_lowercase: 包含所有ASCII小寫字母的字符串。
import string

lowercase = string.ascii_lowercase
print(lowercase)  # 輸出: 'abcdefghijklmnopqrstuvwxyz'
  1. string.ascii_uppercase: 包含所有ASCII大寫字母的字符串。
import string

uppercase = string.ascii_uppercase
print(uppercase)  # 輸出: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  1. string.digits: 包含所有數字字符的字符串。
import string

digits = string.digits
print(digits)  # 輸出: '0123456789'
  1. string.punctuation: 包含所有標點符號字符的字符串。
import string

punctuation = string.punctuation
print(punctuation)  # 輸出: '!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~'
  1. string.whitespace: 包含所有空白字符(空格、制表符、換行符等)的字符串。
import string

whitespace = string.whitespace
print(whitespace)  # 輸出: ' \t\n\r\x0b\x0c'

這些成員讓您可以方便地訪問常見的字符集,並用於字符串操作和驗證。例如,您可以使用 string.digits 來檢查一個字符串是否只包含數字字符。這些常數可以幫助簡化代碼並提高代碼的可讀性。

此外,string 模組還提供了一些函數,如 string.capwords(),用於大寫字符串中的每個單詞的首字母,以及 string.Template,用於進行字符串模板替換等等。如果您需要更多信息,可以參考Python官方文檔中有關 string 模組的詳細說明。

結論

透過使用 random 和 string 內建函式庫,就可以簡單達到一些小的應用,
這些函式庫應用的好可以幫我們更快地達成任務。

系列文章

分享所學貢獻社會
[Python教學]開發工具介紹
[開發工具] Google Colab 介紹
[Python教學] 資料型態
[Python教學] if判斷式
[Python教學] List 清單 和 Tuple元組
[Python教學] for 和 while 迴圈
[Python教學] Dictionary 字典 和 Set 集合
[Python教學] Function函示
[Python教學] Class 類別
[Python教學] 例外處理
[Python教學] 檔案存取
[Python教學] 實作密碼產生器

最後最後有一件小小的請求,請大家幫我填寫一下問卷,
讓我們知道你想上怎麼樣課程,感激不盡。
問卷這邊

Facebook 粉絲頁 - TechMasters 工程師養成記

程式教育 - 工程師養成記

同步分享到部落格


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言